home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / getpass.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  3KB  |  127 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. '''Utilities to get a password and/or the current user name.
  5.  
  6. getpass(prompt) - prompt for a password, with echo turned off
  7. getuser() - get the user name from the environment or password database
  8.  
  9. On Windows, the msvcrt module will be used.
  10. On the Mac EasyDialogs.AskPassword is used, if available.
  11.  
  12. '''
  13. import sys
  14. __all__ = [
  15.     'getpass',
  16.     'getuser']
  17.  
  18. def unix_getpass(prompt = 'Password: '):
  19.     '''Prompt for a password, with echo turned off.
  20.  
  21.     Restore terminal settings at end.
  22.     '''
  23.     
  24.     try:
  25.         fd = sys.stdin.fileno()
  26.     except:
  27.         return default_getpass(prompt)
  28.  
  29.     old = termios.tcgetattr(fd)
  30.     new = old[:]
  31.     new[3] = new[3] & ~(termios.ECHO)
  32.     
  33.     try:
  34.         termios.tcsetattr(fd, termios.TCSADRAIN, new)
  35.         passwd = _raw_input(prompt)
  36.     finally:
  37.         termios.tcsetattr(fd, termios.TCSADRAIN, old)
  38.  
  39.     sys.stdout.write('\n')
  40.     return passwd
  41.  
  42.  
  43. def win_getpass(prompt = 'Password: '):
  44.     '''Prompt for password with echo off, using Windows getch().'''
  45.     if sys.stdin is not sys.__stdin__:
  46.         return default_getpass(prompt)
  47.     
  48.     import msvcrt as msvcrt
  49.     for c in prompt:
  50.         msvcrt.putch(c)
  51.     
  52.     pw = ''
  53.     while None:
  54.         c = msvcrt.getch()
  55.         if c == '\r' or c == '\n':
  56.             break
  57.         
  58.         if c == '\x03':
  59.             raise KeyboardInterrupt
  60.         
  61.         if c == '\x08':
  62.             pw = pw[:-1]
  63.             continue
  64.         pw = pw + c
  65.     msvcrt.putch('\r')
  66.     msvcrt.putch('\n')
  67.     return pw
  68.  
  69.  
  70. def default_getpass(prompt = 'Password: '):
  71.     print 'Warning: Problem with getpass. Passwords may be echoed.'
  72.     return _raw_input(prompt)
  73.  
  74.  
  75. def _raw_input(prompt = ''):
  76.     prompt = str(prompt)
  77.     if prompt:
  78.         sys.stdout.write(prompt)
  79.     
  80.     line = sys.stdin.readline()
  81.     if not line:
  82.         raise EOFError
  83.     
  84.     if line[-1] == '\n':
  85.         line = line[:-1]
  86.     
  87.     return line
  88.  
  89.  
  90. def getuser():
  91.     '''Get the username from the environment or password database.
  92.  
  93.     First try various environment variables, then the password
  94.     database.  This works on Windows as long as USERNAME is set.
  95.  
  96.     '''
  97.     import os as os
  98.     for name in ('LOGNAME', 'USER', 'LNAME', 'USERNAME'):
  99.         user = os.environ.get(name)
  100.         if user:
  101.             return user
  102.             continue
  103.     
  104.     import pwd as pwd
  105.     return pwd.getpwuid(os.getuid())[0]
  106.  
  107.  
  108. try:
  109.     import termios
  110.     (termios.tcgetattr, termios.tcsetattr)
  111. except (ImportError, AttributeError):
  112.     
  113.     try:
  114.         import msvcrt
  115.     except ImportError:
  116.         
  117.         try:
  118.             from EasyDialogs import AskPassword
  119.         except ImportError:
  120.             getpass = default_getpass
  121.  
  122.         getpass = AskPassword
  123.  
  124.     getpass = win_getpass
  125.  
  126. getpass = unix_getpass
  127.